﻿/// <reference path="../Script/ext-4.1.1a/test.js" />
Ext.require(['Ext.data.*', 'Ext.grid.*']);
Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: [{
        name: 'uid',
        type: 'string'
        // useNull: true//这样数字如果值为空则不会自动转成0,则提交时注意后台bean类中的属性int要用对象类型，否则解析出错
    }, {
        name: 'uname',
        type: 'string'
    }, {
        name: 'pwd',
        type: 'string'
    }, {
        name: 'RealName',
        type: 'string'
    }, {
        name: 'Birthday',
        type: 'string'
        //useNull: true
    }]
    // idProperty: 'uid'// 极为重要的配置。关系到表格修改数据的获取
});

var store = Ext.create('Ext.data.Store', {
    model: 'User',    
    autoLoad: true,
    animate: true,
    //loadMask: false,
    proxy: {
        type: 'ajax',
        url: 'Module/BaseSys/User.ashx',
        actionMethods: { read: 'POST' },
        reader: {
            //type: 'json',
            root: 'rowstt'
            //totalProperty: 'total'
        }
    }
});
Ext.onReady(function () {
    var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
        clicksToEdit: 2
    });
    var grid = Ext.create('Ext.grid.Panel', {
        tbar: [{          
            text: '新 增',
            tooltip: '新 增',
            iconCls: 'app_add',
            handler: add
        }, {
            text: '编 辑',
            tooltip: '编 辑',
            iconCls: 'app_edit',
            handler: alter
        }, {
            text: '删 除',
            tooltip: '删 除',
            iconCls: 'app_delete',            
            handler: otherDelete
        }],
        //title: 'All Products',
        store: store,
        height:Ext.getBody().getHeight() - 100,
       // columnLines: true,
        selModel: Ext.create('Ext.selection.CheckboxModel'),
        columns: [{
            header: 'uid',
            dataIndex: 'uid',
            hidden: true
        }, {
            header: '用户名',
            dataIndex: 'uname',
            editor: {
                allowBlank: false
            }
        }, {
            header: '密 码',
            dataIndex: 'pwd',
            editor: {
                allowBlank: false
            }
        }, {
            header: '姓 名',
            dataIndex: 'RealName'
        }, {
            header: '生 日',
            dataIndex: 'Birthday'           
        }],
        
//        forceFit: true,
//        bbar: Ext.create('Ext.PagingToolbar', {
//            store: store,
//            dock: 'bottom',
//            displayInfo: true,
//            displayMsg: '显示 {0} - {1} 条，共计 {2} 条',
//            emptyMsg: "没有数据"
//        }),      
        renderTo: 'userMngDiv'
       // plugins: [cellEditing]
    });
  //  store.loadPage(1);
    var p = parent.Ext.getCmp('contentTabs');
    // alert(p);
    function alter() {
        var records = store.getUpdatedRecords(); // 获取修改的行的数据，无法获取幻影数据
        var phantoms = store.getNewRecords(); //获得幻影行
        records = records.concat(phantoms); //将幻影数据与真实数据合并
        if (records.length == 0) {
            Ext.MessageBox.show({
                title: "提示",
                msg: "没有任何数据被修改过!"
                // icon: Ext.MessageBox.INFO
            });
            return;
        } else {
            Ext.Msg.confirm("请确认", "是否真的要修改数据？", function (button, text) {
                if (button == "yes") {
                    var data = [];
                    // alert(records);
                    Ext.Array.each(records, function (record) {
                        data.push(record.data);
                        // record.commit();// 向store提交修改数据，页面效果
                    });

                    Ext.Ajax.request({
                        url: 'alterUsers.action',
                        params: {
                            alterUsers: Ext.encode(data)
                        },
                        method: 'POST',
                        timeout: 2000,

                        success: function (response, opts) {
                            var success = Ext.decode(response.responseText).success;
                            // 当后台数据同步成功时
                            if (success) {
                                Ext.Array.each(records, function (record) {
                                    // data.push(record.data);
                                    record.commit(); // 向store提交修改数据，页面效果
                                });
                            } else {
                                Ext.MessageBox.show({
                                    title: "提示",
                                    msg: "数据修改失败!"
                                    // icon: Ext.MessageBox.INFO
                                });
                            }
                        }
                    });
                }
            });

        }

    }
    // 传递对象删除
    //	function deleteUsers() {
    //		var data = grid.getSelectionModel().getSelection();
    //		// alert(data);
    //		if (data.length == 0) {
    //			Ext.MessageBox.show({
    //				title : "提示",
    //				msg : "请先选择您要操作的行!"
    //					// icon: Ext.MessageBox.INFO
    //				});
    //			return;
    //		} else {
    //			Ext.Msg.confirm("请确认", "是否真的要删除数据？", function(button, text) {
    //				if (button == "yes") {
    //					var ids = [];
    //					Ext.Array.each(data, function(record) {
    //								ids.push(record.data);
    //							});
    //					Ext.Ajax.request({
    //						url : 'deleteUsers.action',
    //						params : {
    //							deleteUsers : Ext.encode(ids)
    //						},
    //						method : 'POST',
    //						// timeout : 2000,//默认30秒
    //						success : function(response, opts) {
    //							var success = Ext.decode(response.responseText).success;
    //							// 当后台数据同步成功时
    //							if (success) {
    //								Ext.Array.each(data, function(record) {
    //											store.remove(record);// 页面效果
    //										});
    //							} else {
    //								Ext.MessageBox.show({
    //									title : "提示",
    //									msg : "数据删除失败!"
    //										// icon: Ext.MessageBox.INFO
    //									});
    //							}
    //
    //						}
    //					});
    //				}
    //			});
    //
    //		}
    //	}
    // 编码ID删除
    function otherDelete() {

        var data = grid.getSelectionModel().getSelection();
        // alert(data);
        if (data.length == 0) {
            Ext.MessageBox.show({
                title: "提示",
                msg: "请先选择您要操作的行!"
                // icon: Ext.MessageBox.INFO
            });
            return;
        } else {
            Ext.Msg.confirm("请确认", "是否真的要删除数据？", function (button, text) {
                if (button == "yes") {
                    var ids = [];
                    Ext.Array.each(data, function (record) {
                        var uid = record.get('uid');
                        //如果删除的是幻影数据，则id就不传递到后台了，直接在前台删除即可
                        if (uid) {
                            ids.push(uid);
                        }

                    });

                    Ext.Ajax.request({
                        url: 'deleteUsers.action',
                        params: {
                            deleteIds: ids.join(',')
                        },
                        method: 'POST',
                        // timeout : 2000,//默认30秒
                        success: function (response, opts) {

                            // store.loadPage(1);

                            var success = Ext.decode(response.responseText).success;
                            // 当后台数据同步成功时
                            if (success) {
                                Ext.Array.each(data, function (record) {
                                    store.remove(record); // 页面效果
                                });
                            } else {
                                Ext.MessageBox.show({
                                    title: "提示",
                                    msg: "数据删除失败!"
                                    // icon: Ext.MessageBox.INFO
                                });
                            }

                        }
                    });
                }
            });

        }

    }
    function add() {
        store.insert(0, new User());
    }
});